package cn.jobstart.search;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import cn.jobstart.pubInter.BaseSearch;
import cn.jobstart.model.TalentSubscriptionTask;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import lombok.Data;
/**
*   @author sunke
*   @Date 2023-11-24 16:07:03
*   @description TalentSubscriptionTaskSearch      人才订阅任务
*/


@Data
@ApiModel("人才订阅任务TalentSubscriptionTaskSearch")
public abstract class TalentSubscriptionTaskSearch<Sub extends TalentSubscriptionTaskSearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "版本")
    private Integer versionEq;
    @ApiModelProperty(value = "标题")
    private String titleLike;
    @ApiModelProperty(value = "订阅人ID")
    private String adminIdEq;
    @ApiModelProperty(value = "评阅人姓名")
    private String adminTruenameLike;
    @ApiModelProperty(value = "渠道 1:boss直聘:boss,2:智联招聘:zhaopin,4:前程无忧:51job")
    private Integer channelBit;
    @ApiModelProperty(value = "关键词")
    private String keywordLike;
    @ApiModelProperty(value = "工作经验 0:不限:unlimit,1:1年以内:one_down,2:1-3年:one_three,3:3-5年:three_five,4: 5-10年:five_ten,5:10年以上:ten_up")
    private List workExperienceFlagIn;
    @ApiModelProperty(value = "工作经验年限")
    private String workExperienceLike;
    @ApiModelProperty(value = "学历 0:不限:unlimit,1:初中及以下:middle,2:高中/中技/中专:Senior,3:大专:junior,4:本科:undergraduate,5:硕士:Master,6:博士:doctor")
    private List educationFlagIn;
    @ApiModelProperty(value = "职位")
    private String jobNameLike;
    @ApiModelProperty(value = "行业")
    private String professionLike;
    @ApiModelProperty(value = "目前城市")
    private String presentCityLike;
    @ApiModelProperty(value = "期望城市")
    private String desiredCityLike;
    @ApiModelProperty(value = "性别 0:不限:unlimit,1:男:male,2:女:female")
    private List sexIn;
    @ApiModelProperty(value = "大于最小年龄")
    private Integer ageMinGreater;
    @ApiModelProperty(value = "小于最小年龄")
    private Integer ageMinLess;
    @ApiModelProperty(value = "大于最大年龄")
    private Integer ageMaxGreater;
    @ApiModelProperty(value = "小于最大年龄")
    private Integer ageMaxLess;
    @ApiModelProperty(value = "大于目前薪资下限")
    private Float currentSalaryMinGreater;
    @ApiModelProperty(value = "小于目前薪资下限")
    private Float currentSalaryMinLess;
    @ApiModelProperty(value = "大于目前薪资上限")
    private Float currentSalaryMaxGreater;
    @ApiModelProperty(value = "小于目前薪资上限")
    private Float currentSalaryMaxLess;
    @ApiModelProperty(value = "大于期望薪资下限")
    private Float expectedSalaryMinGreater;
    @ApiModelProperty(value = "小于期望薪资下限")
    private Float expectedSalaryMinLess;
    @ApiModelProperty(value = "大于期望薪资上限")
    private Float expectedSalaryMaxGreater;
    @ApiModelProperty(value = "小于期望薪资上限")
    private Float expectedSalaryMaxLess;
    @ApiModelProperty(value = "学校")
    private String schoolLike;
    @ApiModelProperty(value = "专业")
    private String specialityLike;
    @ApiModelProperty(value = "订阅状态 0:创建:create,1:待启动:wait_run,2:进行中:start,3:暂停:suspend,4:结束:stop,5:关闭:close")
    private List statusIn;
    @ApiModelProperty(value = "大于爬到简历数")
    private Integer resumeCountGreater;
    @ApiModelProperty(value = "小于爬到简历数")
    private Integer resumeCountLess;
    @ApiModelProperty(value = "开始启用时间")
    private Date startTimeStart;
    @ApiModelProperty(value = "结束启用时间")
    private Date startTimeEnd;
    @ApiModelProperty(value = "开始暂停时间")
    private Date suspendTimeStart;
    @ApiModelProperty(value = "结束暂停时间")
    private Date suspendTimeEnd;
    @ApiModelProperty(value = "开始停止时间")
    private Date stopTimeStart;
    @ApiModelProperty(value = "结束停止时间")
    private Date stopTimeEnd;
    @ApiModelProperty(value = "开始关闭时间")
    private Date closeTimeStart;
    @ApiModelProperty(value = "结束关闭时间")
    private Date closeTimeEnd;
    @ApiModelProperty(value = "开始实际开始爬取时间")
    private Date startRunTimeStart;
    @ApiModelProperty(value = "结束实际开始爬取时间")
    private Date startRunTimeEnd;
    @ApiModelProperty(value = "工作经验")
    private String workExperienceFlagsLike;
    @ApiModelProperty(value = "教育经验")
    private String educationFlagsLike;
    @ApiModelProperty(value = "职位")
    private String jobNamesLike;
    @ApiModelProperty(value = "行业")
    private String professionsLike;
    @ApiModelProperty(value = "目前城市")
    private String presentCitysLike;
    @ApiModelProperty(value = "期望城市")
    private String desiredCitysLike;
    @ApiModelProperty(value = "性别")
    private String sexsLike;
    @ApiModelProperty(value = "大于爬取多少条")
    private Integer resumeGraspCountGreater;
    @ApiModelProperty(value = "小于爬取多少条")
    private Integer resumeGraspCountLess;
    @ApiModelProperty(value = "大于更新了多少条")
    private Integer resumeUpdateCountGreater;
    @ApiModelProperty(value = "小于更新了多少条")
    private Integer resumeUpdateCountLess;

    public TalentSubscriptionTaskSearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return TalentSubscriptionTask.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return TalentSubscriptionTask.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return TalentSubscriptionTask.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return TalentSubscriptionTask.ID;
    }

    @Override
    public String  toString() {
        return "TalentSubscriptionTaskSearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(TalentSubscriptionTask.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(TalentSubscriptionTask.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(TalentSubscriptionTask.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(TalentSubscriptionTask.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(TalentSubscriptionTask.DEL_FLAG, delFlagEq);
        return getSubThis();
    }
    public Sub setVersionEq(Integer versionEq){
        this.versionEq = versionEq;
        setEqualField(TalentSubscriptionTask.VERSION, versionEq);
        return getSubThis();
    }
    public Sub setTitleLike(String titleLike){
        this.titleLike = titleLike;
        setLikeField(TalentSubscriptionTask.TITLE, titleLike);
        return getSubThis();
    }
    public Sub setAdminIdEq(String adminIdEq){
        this.adminIdEq = adminIdEq;
        setEqualField(TalentSubscriptionTask.ADMIN_ID, adminIdEq);
        return getSubThis();
    }
    public Sub setAdminTruenameLike(String adminTruenameLike){
        this.adminTruenameLike = adminTruenameLike;
        setLikeField(TalentSubscriptionTask.ADMIN_TRUENAME, adminTruenameLike);
        return getSubThis();
    }
    public Sub setChannelBit(Integer channelBit){
        this.channelBit = channelBit;
        setBitField(TalentSubscriptionTask.CHANNEL, channelBit);
        return getSubThis();
    }
    public Sub setKeywordLike(String keywordLike){
        this.keywordLike = keywordLike;
        setLikeField(TalentSubscriptionTask.KEYWORD, keywordLike);
        return getSubThis();
    }
    public Sub setWorkExperienceFlagIn(List workExperienceFlagIn){
        this.workExperienceFlagIn = workExperienceFlagIn;
        setInField(TalentSubscriptionTask.WORK_EXPERIENCE_FLAG, workExperienceFlagIn);
        return getSubThis();
    }
    public Sub setWorkExperienceLike(String workExperienceLike){
        this.workExperienceLike = workExperienceLike;
        setLikeField(TalentSubscriptionTask.WORK_EXPERIENCE, workExperienceLike);
        return getSubThis();
    }
    public Sub setEducationFlagIn(List educationFlagIn){
        this.educationFlagIn = educationFlagIn;
        setInField(TalentSubscriptionTask.EDUCATION_FLAG, educationFlagIn);
        return getSubThis();
    }
    public Sub setJobNameLike(String jobNameLike){
        this.jobNameLike = jobNameLike;
        setLikeField(TalentSubscriptionTask.JOB_NAME, jobNameLike);
        return getSubThis();
    }
    public Sub setProfessionLike(String professionLike){
        this.professionLike = professionLike;
        setLikeField(TalentSubscriptionTask.PROFESSION, professionLike);
        return getSubThis();
    }
    public Sub setPresentCityLike(String presentCityLike){
        this.presentCityLike = presentCityLike;
        setLikeField(TalentSubscriptionTask.PRESENT_CITY, presentCityLike);
        return getSubThis();
    }
    public Sub setDesiredCityLike(String desiredCityLike){
        this.desiredCityLike = desiredCityLike;
        setLikeField(TalentSubscriptionTask.DESIRED_CITY, desiredCityLike);
        return getSubThis();
    }
    public Sub setSexIn(List sexIn){
        this.sexIn = sexIn;
        setInField(TalentSubscriptionTask.SEX, sexIn);
        return getSubThis();
    }
    public Sub setAgeMinGreater(Integer ageMinGreater){
        this.ageMinGreater = ageMinGreater;
        setGreaterField(TalentSubscriptionTask.AGE_MIN, ageMinGreater);
        return getSubThis();
    }
    public Sub setAgeMinLess(Integer ageMinLess){
        this.ageMinLess = ageMinLess;
        setLessField(TalentSubscriptionTask.AGE_MIN, ageMinLess);
        return getSubThis();
    }
    public Sub setAgeMaxGreater(Integer ageMaxGreater){
        this.ageMaxGreater = ageMaxGreater;
        setGreaterField(TalentSubscriptionTask.AGE_MAX, ageMaxGreater);
        return getSubThis();
    }
    public Sub setAgeMaxLess(Integer ageMaxLess){
        this.ageMaxLess = ageMaxLess;
        setLessField(TalentSubscriptionTask.AGE_MAX, ageMaxLess);
        return getSubThis();
    }
    public Sub setCurrentSalaryMinGreater(Float currentSalaryMinGreater){
        this.currentSalaryMinGreater = currentSalaryMinGreater;
        setGreaterField(TalentSubscriptionTask.CURRENT_SALARY_MIN, currentSalaryMinGreater);
        return getSubThis();
    }
    public Sub setCurrentSalaryMinLess(Float currentSalaryMinLess){
        this.currentSalaryMinLess = currentSalaryMinLess;
        setLessField(TalentSubscriptionTask.CURRENT_SALARY_MIN, currentSalaryMinLess);
        return getSubThis();
    }
    public Sub setCurrentSalaryMaxGreater(Float currentSalaryMaxGreater){
        this.currentSalaryMaxGreater = currentSalaryMaxGreater;
        setGreaterField(TalentSubscriptionTask.CURRENT_SALARY_MAX, currentSalaryMaxGreater);
        return getSubThis();
    }
    public Sub setCurrentSalaryMaxLess(Float currentSalaryMaxLess){
        this.currentSalaryMaxLess = currentSalaryMaxLess;
        setLessField(TalentSubscriptionTask.CURRENT_SALARY_MAX, currentSalaryMaxLess);
        return getSubThis();
    }
    public Sub setExpectedSalaryMinGreater(Float expectedSalaryMinGreater){
        this.expectedSalaryMinGreater = expectedSalaryMinGreater;
        setGreaterField(TalentSubscriptionTask.EXPECTED_SALARY_MIN, expectedSalaryMinGreater);
        return getSubThis();
    }
    public Sub setExpectedSalaryMinLess(Float expectedSalaryMinLess){
        this.expectedSalaryMinLess = expectedSalaryMinLess;
        setLessField(TalentSubscriptionTask.EXPECTED_SALARY_MIN, expectedSalaryMinLess);
        return getSubThis();
    }
    public Sub setExpectedSalaryMaxGreater(Float expectedSalaryMaxGreater){
        this.expectedSalaryMaxGreater = expectedSalaryMaxGreater;
        setGreaterField(TalentSubscriptionTask.EXPECTED_SALARY_MAX, expectedSalaryMaxGreater);
        return getSubThis();
    }
    public Sub setExpectedSalaryMaxLess(Float expectedSalaryMaxLess){
        this.expectedSalaryMaxLess = expectedSalaryMaxLess;
        setLessField(TalentSubscriptionTask.EXPECTED_SALARY_MAX, expectedSalaryMaxLess);
        return getSubThis();
    }
    public Sub setSchoolLike(String schoolLike){
        this.schoolLike = schoolLike;
        setLikeField(TalentSubscriptionTask.SCHOOL, schoolLike);
        return getSubThis();
    }
    public Sub setSpecialityLike(String specialityLike){
        this.specialityLike = specialityLike;
        setLikeField(TalentSubscriptionTask.SPECIALITY, specialityLike);
        return getSubThis();
    }
    public Sub setStatusIn(List statusIn){
        this.statusIn = statusIn;
        setInField(TalentSubscriptionTask.STATUS, statusIn);
        return getSubThis();
    }
    public Sub setResumeCountGreater(Integer resumeCountGreater){
        this.resumeCountGreater = resumeCountGreater;
        setGreaterField(TalentSubscriptionTask.RESUME_COUNT, resumeCountGreater);
        return getSubThis();
    }
    public Sub setResumeCountLess(Integer resumeCountLess){
        this.resumeCountLess = resumeCountLess;
        setLessField(TalentSubscriptionTask.RESUME_COUNT, resumeCountLess);
        return getSubThis();
    }
    public Sub setStartTimeStart(Date startTimeStart){
        this.startTimeStart = startTimeStart;
        setDateStartField(TalentSubscriptionTask.START_TIME, startTimeStart);
        return getSubThis();
    }
    public Sub setStartTimeEnd(Date startTimeEnd){
        this.startTimeEnd = startTimeEnd;
        setDateEndField(TalentSubscriptionTask.START_TIME, startTimeEnd);
        return getSubThis();
    }
    public Sub setSuspendTimeStart(Date suspendTimeStart){
        this.suspendTimeStart = suspendTimeStart;
        setDateStartField(TalentSubscriptionTask.SUSPEND_TIME, suspendTimeStart);
        return getSubThis();
    }
    public Sub setSuspendTimeEnd(Date suspendTimeEnd){
        this.suspendTimeEnd = suspendTimeEnd;
        setDateEndField(TalentSubscriptionTask.SUSPEND_TIME, suspendTimeEnd);
        return getSubThis();
    }
    public Sub setStopTimeStart(Date stopTimeStart){
        this.stopTimeStart = stopTimeStart;
        setDateStartField(TalentSubscriptionTask.STOP_TIME, stopTimeStart);
        return getSubThis();
    }
    public Sub setStopTimeEnd(Date stopTimeEnd){
        this.stopTimeEnd = stopTimeEnd;
        setDateEndField(TalentSubscriptionTask.STOP_TIME, stopTimeEnd);
        return getSubThis();
    }
    public Sub setCloseTimeStart(Date closeTimeStart){
        this.closeTimeStart = closeTimeStart;
        setDateStartField(TalentSubscriptionTask.CLOSE_TIME, closeTimeStart);
        return getSubThis();
    }
    public Sub setCloseTimeEnd(Date closeTimeEnd){
        this.closeTimeEnd = closeTimeEnd;
        setDateEndField(TalentSubscriptionTask.CLOSE_TIME, closeTimeEnd);
        return getSubThis();
    }
    public Sub setStartRunTimeStart(Date startRunTimeStart){
        this.startRunTimeStart = startRunTimeStart;
        setDateStartField(TalentSubscriptionTask.START_RUN_TIME, startRunTimeStart);
        return getSubThis();
    }
    public Sub setStartRunTimeEnd(Date startRunTimeEnd){
        this.startRunTimeEnd = startRunTimeEnd;
        setDateEndField(TalentSubscriptionTask.START_RUN_TIME, startRunTimeEnd);
        return getSubThis();
    }
    public Sub setWorkExperienceFlagsLike(String workExperienceFlagsLike){
        this.workExperienceFlagsLike = workExperienceFlagsLike;
        setLikeField(TalentSubscriptionTask.WORK_EXPERIENCE_FLAGS, workExperienceFlagsLike);
        return getSubThis();
    }
    public Sub setEducationFlagsLike(String educationFlagsLike){
        this.educationFlagsLike = educationFlagsLike;
        setLikeField(TalentSubscriptionTask.EDUCATION_FLAGS, educationFlagsLike);
        return getSubThis();
    }
    public Sub setJobNamesLike(String jobNamesLike){
        this.jobNamesLike = jobNamesLike;
        setLikeField(TalentSubscriptionTask.JOB_NAMES, jobNamesLike);
        return getSubThis();
    }
    public Sub setProfessionsLike(String professionsLike){
        this.professionsLike = professionsLike;
        setLikeField(TalentSubscriptionTask.PROFESSIONS, professionsLike);
        return getSubThis();
    }
    public Sub setPresentCitysLike(String presentCitysLike){
        this.presentCitysLike = presentCitysLike;
        setLikeField(TalentSubscriptionTask.PRESENT_CITYS, presentCitysLike);
        return getSubThis();
    }
    public Sub setDesiredCitysLike(String desiredCitysLike){
        this.desiredCitysLike = desiredCitysLike;
        setLikeField(TalentSubscriptionTask.DESIRED_CITYS, desiredCitysLike);
        return getSubThis();
    }
    public Sub setSexsLike(String sexsLike){
        this.sexsLike = sexsLike;
        setLikeField(TalentSubscriptionTask.SEXS, sexsLike);
        return getSubThis();
    }
    public Sub setResumeGraspCountGreater(Integer resumeGraspCountGreater){
        this.resumeGraspCountGreater = resumeGraspCountGreater;
        setGreaterField(TalentSubscriptionTask.RESUME_GRASP_COUNT, resumeGraspCountGreater);
        return getSubThis();
    }
    public Sub setResumeGraspCountLess(Integer resumeGraspCountLess){
        this.resumeGraspCountLess = resumeGraspCountLess;
        setLessField(TalentSubscriptionTask.RESUME_GRASP_COUNT, resumeGraspCountLess);
        return getSubThis();
    }
    public Sub setResumeUpdateCountGreater(Integer resumeUpdateCountGreater){
        this.resumeUpdateCountGreater = resumeUpdateCountGreater;
        setGreaterField(TalentSubscriptionTask.RESUME_UPDATE_COUNT, resumeUpdateCountGreater);
        return getSubThis();
    }
    public Sub setResumeUpdateCountLess(Integer resumeUpdateCountLess){
        this.resumeUpdateCountLess = resumeUpdateCountLess;
        setLessField(TalentSubscriptionTask.RESUME_UPDATE_COUNT, resumeUpdateCountLess);
        return getSubThis();
    }
}